slice model: Don't report excessive changes
authorMatthias Clasen <mclasen@redhat.com>
Sun, 6 Jan 2019 17:24:57 +0000 (12:24 -0500)
committerBenjamin Otte <otte@redhat.com>
Sun, 20 Jan 2019 05:11:48 +0000 (06:11 +0100)
We were not skipping an unchanged initial segment
of the slice in some cases. Fix that.

gtk/gtkslicelistmodel.c

index 712e46ca68ecaa56f1b045e0eb28ea939d5d2564..753807fa6f713f9e9e235b34f6fc5f5925e38c2e 100644 (file)
@@ -156,13 +156,19 @@ gtk_slice_list_model_items_changed_cb (GListModel        *model,
   else
     {
       guint n_after, n_before;
+      guint skip;
+
+      if (position > self->offset)
+        skip = position - self->offset;
+      else
+        skip = 0;
 
       n_after = g_list_model_get_n_items (self->model);
       n_before = n_after - added + removed;
       n_after = CLAMP (n_after, self->offset, self->offset + self->size) - self->offset;
       n_before = CLAMP (n_before, self->offset, self->offset + self->size) - self->offset;
 
-      g_list_model_items_changed (G_LIST_MODEL (self), 0, n_before, n_after);
+      g_list_model_items_changed (G_LIST_MODEL (self), skip, n_before - skip, n_after - skip);
     }
 }